Scikit-Learn এর train_test_split() ফাংশনটি ডেটাকে ট্রেনিং এবং টেস্ট সেটে ভাগ করার জন্য ব্যবহৃত হয়। মেশিন লার্নিং মডেল তৈরি করার সময়, ডেটা সাধারণত দুটি ভাগে ভাগ করা হয়:
- ট্রেনিং সেট (Training set): এটি মডেলটিকে প্রশিক্ষণ (training) দেওয়ার জন্য ব্যবহৃত হয়।
- টেস্ট সেট (Test set): এটি মডেলটির পারফরম্যান্স পরীক্ষা (evaluation) করার জন্য ব্যবহৃত হয়।
এই ফাংশনটি ডেটার একটি নির্দিষ্ট শতাংশ ভাগ (যেমন 80% ট্রেনিং এবং 20% টেস্ট) নির্ধারণ করতে সহায়ক।
train_test_split() ফাংশনের সিনট্যাক্স:
from sklearn.model_selection import train_test_split
train_test_split(X, y, test_size=0.25, random_state=None, shuffle=True)
প্যারামিটার:
X: ইনপুট ডেটা (features)। এটি একটি 2D array বা DataFrame হতে পারে।y: টার্গেট ডেটা (labels)। এটি সাধারণত 1D array বা Series হবে।test_size: টেস্ট ডেটার আংশিক অংশ। এটি একটি ভগ্নাংশ (যেমন, 0.2 = 20%) বা পূর্ণসংখ্যা (যেমন, 1000) হতে পারে।train_size: ট্রেনিং ডেটার আংশিক অংশ (অপশনাল)। যদি এটি নির্দিষ্ট না করা হয়, তবে এটি 1 - test_size এর সমান হবে।random_state: র্যান্ডম সিড (seed) নির্ধারণ করে, যাতে একই ভাগ করে দেয়া হয় প্রতিবার এক্সিকিউট করলে। এটি পুনঃপ্রাপ্তি ও পুনঃপুনঃ ফলাফল প্রাপ্তির জন্য গুরুত্বপূর্ণ।shuffle: ডেটাকে শাফল (shuffle) করার সিদ্ধান্ত নেয়। যদিTrueথাকে, ডেটা আগে শাফল করা হবে, অন্যথায় এটি ফলো হবে।
train_test_split() ফাংশন ব্যবহার উদাহরণ:
1. সাধারণ উদাহরণ
from sklearn.model_selection import train_test_split
import numpy as np
# ডেটা তৈরি করা
X = np.array([[1], [2], [3], [4], [5]]) # ইনপুট ফিচার
y = np.array([1, 2, 3, 4, 5]) # টার্গেট লেবেল
# ট্রেন এবং টেস্ট সেটে ভাগ করা (80% ট্রেনিং, 20% টেস্ট)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
print("X_train:", X_train)
print("X_test:", X_test)
print("y_train:", y_train)
print("y_test:", y_test)
আউটপুট:
X_train: [[2]
[4]
[5]
[3]]
X_test: [[1]]
y_train: [2 4 5 3]
y_test: [1]
2. pandas DataFrame এর সাথে ব্যবহার:
import pandas as pd
from sklearn.model_selection import train_test_split
# pandas DataFrame তৈরি করা
data = {'Feature1': [1, 2, 3, 4, 5], 'Feature2': [5, 4, 3, 2, 1], 'Target': [0, 1, 0, 1, 0]}
df = pd.DataFrame(data)
# ইনপুট ফিচার এবং টার্গেট ডেটা আলাদা করা
X = df[['Feature1', 'Feature2']] # ফিচার
y = df['Target'] # টার্গেট
# ট্রেন এবং টেস্ট সেটে ভাগ করা (80% ট্রেনিং, 20% টেস্ট)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
print("X_train:", X_train)
print("X_test:", X_test)
print("y_train:", y_train)
print("y_test:", y_test)
আউটপুট:
X_train: Feature1 Feature2
1 2 4
0 1 5
4 5 1
3 4 2
X_test: Feature1 Feature2
2 3 3
y_train: 1 1
0 0
4 0
3 1
Name: Target, dtype: int64
y_test: 2 0
Name: Target, dtype: int64
train_test_split() এর কিছু গুরুত্বপূর্ণ পয়েন্ট:
test_size: সাধারণত 0.2 বা 0.25 (20% বা 25%) টেস্ট সেটের জন্য ব্যবহৃত হয়, তবে এটি আপনার ডেটার আকার এবং প্রয়োজন অনুসারে পরিবর্তিত হতে পারে।random_state: একটি নির্দিষ্ট মান (যেমন 42) সেট করা হলে, এটি একই ডেটাকে প্রতিবার ভাগ করে দেয়। এটি মডেল ট্রেনিংয়ের পুনঃপ্রাপ্তি নিশ্চিত করতে সহায়ক।shuffle: ডেটাকে শাফল (shuffle) করার সময় নিশ্চিত করুন যে মডেলটি ডেটার প্রকৃত প্যাটার্ন শিখে এবং না যে ডেটার মধ্যে কোন ধারাবাহিকতা না থাকার কারণে এটি সঠিক ফলাফল দেয়।
সারাংশ:
train_test_split() ফাংশনটি ডেটাকে ট্রেনিং এবং টেস্ট সেটে ভাগ করার জন্য অত্যন্ত গুরুত্বপূর্ণ একটি ফাংশন যা Scikit-Learn লাইব্রেরির অংশ। এটি মডেল ট্রেনিংয়ের জন্য গুরুত্বপূর্ণ, কারণ এটি মডেলটির পারফরম্যান্স ঠিকভাবে যাচাই করতে সহায়ক হয়, যাতে মডেলটি নতুন ডেটার জন্য সাধারণীকৃত (generalized) থাকে।
Read more